/**
 * Created by taohj on 2014/4/21.
 */

var util = new Object();


/*
 * 格式化日期
 * */
util.formatDateObject = function (nS) {


    if(!nS){return "";}
    alert(nS);
    var value=new Date(nS*1000);
    console.info(value);
    return value ? (1900 + value.year) + '-' + value.month + '-' + value.date + '' : "";
}





util.getLocalTime=function (nS) {
    return new Date(parseInt(nS) * 1000);
}

    /**
 * 表单清空
 * */
util.formClear = function (button) {
    this.form(button).form('clear');
}


/**
 * 获得表单
 * */
util.form = function (button) {
    return  $(button).parent('div').parent('div').find('form');
}


/**
 * 动态载入js文件
 * */
util.loaddJS = function (src) {
    var x = document.createElement("script");
    x.src = src;
    x.defer = true;
    document.getElementsByTagName("head")[0].appendChild(x);
    //window.setTimeout('readResult()',1000);  //这里用这种方法延时调用newjob.js里的方法readResult()
}


/**
 * 创建标签页
 * @param tabs
 * @param node
 * */
util.createTab = function (tabs, node) {

    if (tabs.tabs('exists', node.text)) {
        //tabs.tabs('select', node.text);
        tabs.tabs('refresh', node.text);
    } else {

        tabs.tabs('add', {
            title: node.text,
            href: node.url,
            closable: true,
            fit: true
        });


    }
}


util.closeDialog=function(btn){
   this.closestDialog(btn).dialog("close");
}

util.closestDialog=function(element){
    return $(element).closest("div.window-body");
}

util.requestUtil = function (result, dialog, datagrid) {

    result = $.parseJSON(result);
    if (result.success) {
        $.messager.show({
            title: 'Success',
            msg: result.message
        });

        if (dialog) {
            dialog.dialog("close");
        }

        if (datagrid) {

            try {
                datagrid.datagrid("reload");
            } catch (e) {
            }


            try {
                datagrid.treegrid("reload");
            } catch (e) {
            }
        }

    }
    else {

        $.messager.show({ //
            title: 'Failure',
            msg: result.message
        });
    }

    return result;


}


/**
 * @author 孙宇
 *
 * @requires jQuery
 *
 * 将form表单元素的值序列化成对象
 *
 * @returns object
 */
util.serializeObject = function (form) {
    var o = {};
    $.each(form.serializeArray(), function (index) {
        if (o[this['name']]) {
            o[this['name']] = o[this['name']] + "," + this['value'];
        } else {
            o[this['name']] = this['value'];
        }
    });
    return o;
};


/*
 * MAP对象，实现MAP功能
 *
 * 接口：
 * size()     获取MAP元素个数
 * isEmpty()    判断MAP是否为空
 * clear()     删除MAP所有元素
 * put(key, value)   向MAP中增加元素（key, value)
 * remove(key)    删除指定KEY的元素，成功返回True，失败返回False
 * get(key)    获取指定KEY的元素值VALUE，失败返回NULL
 * element(index)   获取指定索引的元素（使用element.key，element.value获取KEY和VALUE），失败返回NULL
 * containsKey(key)  判断MAP中是否含有指定KEY的元素
 * containsValue(value) 判断MAP中是否含有指定VALUE的元素
 * values()    获取MAP中所有VALUE的数组（ARRAY）
 * keys()     获取MAP中所有KEY的数组（ARRAY）
 *
 * 例子：
 * var map = new Map();
 *
 * map.put("key", "value");
 * var val = map.get("key")
 * ……
 *
 */
util.Map = function () {
    this.elements = new Array();

    //获取MAP元素个数
    this.size = function () {
        return this.elements.length;
    }

    //判断MAP是否为空
    this.isEmpty = function () {
        return (this.elements.length < 1);
    }

    //删除MAP所有元素
    this.clear = function () {
        this.elements = new Array();
    }

    //向MAP中增加元素（key, value)
    this.put = function (_key, _value) {
        this.elements.push({
            key: _key,
            value: _value
        });
    }

    //删除指定KEY的元素，成功返回True，失败返回False
    this.remove = function (_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    this.elements.splice(i, 1);
                    return true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }

    //获取指定KEY的元素值VALUE，失败返回NULL
    this.get = function (_key) {
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    return this.elements[i].value;
                }
            }
        } catch (e) {
            return null;
        }
    }

    //获取指定索引的元素（使用element.key，element.value获取KEY和VALUE），失败返回NULL
    this.element = function (_index) {
        if (_index < 0 || _index >= this.elements.length) {
            return null;
        }
        return this.elements[_index];
    }

    //判断MAP中是否含有指定KEY的元素
    this.containsKey = function (_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }

    //判断MAP中是否含有指定VALUE的元素
    this.containsValue = function (_value) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].value == _value) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }

    //获取MAP中所有VALUE的数组（ARRAY）
    this.values = function () {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].value);
        }
        return arr;
    }

    //获取MAP中所有KEY的数组（ARRAY）
    this.keys = function () {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].key);
        }
        return arr;
    }
}


util.decode = function (value, decodeParam, defaultValue) {

    var map = new util.Map();

    for (var i = 0; i < decodeParam.length; i++) {
        map.put(decodeParam[i][0], decodeParam[i][1]);
    }
    var returnValue = map.get(value);
    if (!returnValue) {
        returnValue = defaultValue;
    }
    return returnValue;
}


//将表单数据转为json
function formToJson(form) {
    var formarry = $(form).serializeArray()
    var jsonStr = "";
    jsonStr += '{';
    for (var i = 0; i < formarry.length; i++) {
        jsonStr += '"' + formarry[i].name + '":"' + formarry[i].value + '",'
    }
    jsonStr = jsonStr.substring(0, (jsonStr.length - 1));
    jsonStr += '}'

    var json = JSON.parse(jsonStr)
    return json
}





$.fn.dialog.defaults.onClose=function(){$(this).dialog('destroy');}



